import { CSSProperties } from 'vue'
import { IconsType, IconType, GridAutoFillColsPropsType } from '@xtail/vue3'
import {
  InputProps,
  ScrollbarProps,
  ButtonProps,
  PaginationProps,
  EmptyProps,
  ResultProps
} from 'element-plus'

export const IconSetPropsType_Name = 'IconSetPropsType'
export const IconSetPropsBaseType_Name = 'IconSetPropsBaseType'

export type IconSetPropsType = {
  icons?: IconsType
  value?: IconType
  'onUpdate:value'?: (value: IconType) => void
  size?: 'large' | 'default' | 'small'
  filter?: boolean
  filterIptProps?: Partial<InputProps>
  filterBtnProps?: Partial<ButtonProps>
  filterClass?: string | string[]
  filterStyle?: string | Partial<CSSProperties>
  scrollbarProps?: Partial<ScrollbarProps>
  gridAutoFillColsProps?: GridAutoFillColsPropsType
  iconBtnProps?: Partial<ButtonProps>
  iconBtnSelectedProps?: Partial<ButtonProps>
  iconClass?: string | string[]
  iconStyle?: string | Partial<CSSProperties>
  iconSelectedClass?: string | string[]
  iconSelectedStyle?: string | Partial<CSSProperties>
  pagination?: boolean
  defaultPageSize?: number
  paginationProps?: Partial<PaginationProps>
  paginationScrollbarProps?: Partial<ScrollbarProps>
  paginationScrollbarClass?: string | string[]
  paginationScrollbarStyle?: string | Partial<CSSProperties>
  emptyProps?: Partial<EmptyProps>
  resultProps?: Partial<ResultProps>
}

export type IconSetPropsBaseType = Omit<IconSetPropsType, 'icons'>
